﻿using System;
using System.Data;
using System.Data.Linq;
using System.Data.Linq.SqlClient;
using System.Linq;
using System.Windows.Forms;
using BusinessLogicTier.BLL;
using BusinessLogicTier.Connection;
using BusinessLogicTier.DAL;
using BusinessLogicTier.DAL.DataContext;
using Core;
using DevExpress.Utils;

namespace QLBH.Danhmuc
{
    public partial class FrmDVT_Them : Form
    {
        public FrmDVT_Them()
        {
            InitializeComponent();
            IdUser = util.GetUserID();
            txtMaDVT.Text = objDAL.MaTuDong();
            txtTenDVT.Focus();
        }
        
        DMKetnoi_BLL DMKetnoi_BLL = new DMKetnoi_BLL();
        public FrmDVT frmDonViTinh;
        private Utils util = new Utils();
        private DonViTinh_BLL objBll = new DonViTinh_BLL();
        private DonViTinh_DAL objDAL = new DonViTinh_DAL();
        private int idUser;
        private WaitDialogForm waitDialog = null;
        
        public int IdUser
        {
            get { return idUser; }
            set { idUser = value; }
        }

        protected tbl_DonViTinh GetObjectFromForm()
        {
            var objGet = new tbl_DonViTinh();
            objGet.MaDonViTinh = util.ChuanHoaXau(txtMaDVT.Text);
            objGet.TenDonViTinh = util.ChuanHoaXau(txtTenDVT.Text);
            objGet.GhiChu = util.ChuanHoaXau(txtGhiChuDVT.Text);
            objGet.TrangThai = true;
            return objGet;
        }

        private void btnLuuDVT_Click(object sender, EventArgs e)
        {
            try
            {
                waitDialog = new WaitDialogForm("Vui lòng đợi...", "Lưu dữ liệu");
                if (util.ChuanHoaXau(txtTenDVT.Text) == "")
                {
                    waitDialog.Dispose();
                    MsgBoxVN.Show("Tên đơn vị tính không được để trống!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtTenDVT.Focus();
                    return;
                }
                if (FrmDVT.checkClick == 1)
                {
                    var db = new QLBHDataContext(DataService.m_ConnectString);
                    db.Refresh(RefreshMode.KeepChanges, db.tbl_Bans);

                    var lst = (from m in db.tbl_DonViTinhs
                               where m.TrangThai == true && m.MaDonViTinh == txtMaDVT.Text
                               select m).FirstOrDefault();
                    if (lst != null)
                    {
                        if (MsgBoxVN.Show("Mã đã tồn tại!\n Bạn có muốn lưu với mã khác không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                        {
                            objDAL.MaTuDong();
                        }
                        else
                        {
                            waitDialog.Dispose();
                            return;
                        }
                    }

                    tbl_DonViTinh objGet = GetObjectFromForm();
                    objGet.NguoiTao = IdUser;
                    objGet.NgayTao = DateTime.Now;
                    if (objBll.Insert(objGet))
                    {
                        waitDialog.Caption = "Hoàn thành";
                        waitDialog.Dispose();
                        MsgBoxVN.Show("Thêm mới thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        FrmDVT.checkClick = 0;
                        frmDonViTinh.gridControlDvt.DataSource = objBll.GetAll();
                        txtTenDVT.Text = "";
                        txtGhiChuDVT.Text = "";
                        //Dispose();
                        //frmDonViTinh.ThemDVT_Click();
                        txtTenDVT.Text = "";
                        txtGhiChuDVT.Text = "";
                        objDAL.MaTuDong();
                        txtTenDVT.Focus();
                    }
                    else
                    {
                        waitDialog.Dispose();
                        MsgBoxVN.Show("Không thêm được!", "Lỗi", MessageBoxButtons.OK);
                    }
                }
                else if (FrmDVT.checkClick == 2)
                {
                    tbl_DonViTinh objUpdate = GetObjectFromForm();
                    objUpdate.ID = FrmDVT.idDvt;
                    objUpdate.NguoiSua = IdUser;
                    objUpdate.NgaySua = DateTime.Now;
                    if (objBll.Update(objUpdate))
                    {
                        waitDialog.Caption = "Hoàn thành";
                        waitDialog.Dispose();
                        QLBHDataContext db = new QLBHDataContext(DataService.m_ConnectString);
                        MsgBoxVN.Show("Cập nhật thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        FrmDVT.checkClick = 0;
                        db.Refresh(RefreshMode.KeepChanges, db.tbl_DonViTinhs);
                        Dispose();
                    }
                    else
                    {
                        waitDialog.Dispose();
                        MsgBoxVN.Show("Cập nhật thất bại!", "Lỗi", MessageBoxButtons.OK);
                    }
                }
                else
                {
                    var db = new QLBHDataContext(DataService.m_ConnectString);
                    db.Refresh(RefreshMode.KeepChanges, db.tbl_Bans);

                    var lst = (from m in db.tbl_DonViTinhs
                               where m.TrangThai == true && m.MaDonViTinh == txtMaDVT.Text
                               select m).FirstOrDefault();
                    if (lst != null)
                    {
                        if (MsgBoxVN.Show("Mã đã tồn tại!\n Bạn có muốn lưu với mã khác không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                        {
                            objDAL.MaTuDong();
                        }
                        else
                        {
                            waitDialog.Dispose();
                            return;
                        }
                    }

                    tbl_DonViTinh objGet = GetObjectFromForm();
                    objGet.NguoiTao = IdUser;
                    objGet.NgayTao = DateTime.Now;
                    if (objBll.Insert(objGet))
                    {
                        waitDialog.Caption = "Hoàn thành";
                        waitDialog.Dispose();
                        MsgBoxVN.Show("Thêm mới thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        FrmDVT.checkClick = 0;
                        txtTenDVT.Text = "";
                        txtGhiChuDVT.Text = "";
                        txtTenDVT.Text = "";
                        txtGhiChuDVT.Text = "";
                        objDAL.MaTuDong();
                        txtTenDVT.Focus();
                    }
                    else
                    {
                        waitDialog.Dispose();
                        MsgBoxVN.Show("Không thêm được!", "Lỗi", MessageBoxButtons.OK);
                    }
                }
                waitDialog.Dispose();
            }
            catch (Exception)
            {
                waitDialog.Dispose();
            }
        }

        private void btnDongDVT_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
    }
}
